package com.dimples.dd.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dimples.dd.common.model.Option;
import com.dimples.dd.system.model.entity.SystemOrgDO;
import com.dimples.dd.system.model.form.OrgForm;
import com.dimples.dd.system.model.query.OrgPageQuery;
import com.dimples.dd.system.model.vo.OrgTreeVO;
import jakarta.validation.Valid;

import java.util.List;

public interface SystemOrgService extends IService<SystemOrgDO> {

    /**
     * 查询所有机构信息
     *
     * @return List<Option < Long>>
     */
    List<Option<String>> listOrgOptions();

    /**
     * 查询机构信息
     *
     * @param queryParams 查询参数
     * @return List<OrgTreeVO>
     */
    List<OrgTreeVO> listOrgs(OrgPageQuery queryParams);

    /**
     * 获取机构表单数据
     *
     * @param orgId 机构ID
     * @return OrgForm
     */
    OrgForm selectOrgForm(String orgId);

    /**
     * 新增机构
     *
     * @param formData 表单数据
     * @return 新增机构ID
     */
    String createOrg(@Valid OrgForm formData);

    /**
     * 修改机构
     *
     * @param orgId    机构ID
     * @param formData 表单数据
     * @return 修改结果
     */
    String updateOrg(String orgId, @Valid OrgForm formData);

    /**
     * 删除机构
     *
     * @param ids 机构ID
     * @return 删除结果
     */
    boolean deleteByIds(String ids);

}
